package com.ocm.mq.mq;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.Exchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author hqy
 * @Date 23/01/2022
 * @Description 库存*自解锁 保证最终一致性
 */
@Component
public class StockMq {


	@Bean
	public Queue stockReleaseStockQueue() {
		return new Queue("stock.release.stock.queue",true,false,false);
	}

	@Bean
	public Queue stockDelayQueue() {
		Map<String,Object> args = new HashMap<>(3);
		args.put("x-dead-letter-exchange","stock-event-exchange");
		args.put("x-dead-letter-routing-key","stock.release");
		args.put("x-message-ttl",70000);
		return new Queue("stock.delay.queue",true,false,false,args);
	}

	@Bean
	public Binding stockReleaseBinding() {
		return new Binding(
			"stock.release.stock.queue",
			Binding.DestinationType.QUEUE,
			"stock-event-exchange",
			"stock.release.#",
			null);
	}

	@Bean
	public Binding stockLockedBinding() {
		return new Binding(
			"stock.delay.queue",
			Binding.DestinationType.QUEUE,
			"stock-event-exchange",
			"stock.locked",null);

	}


}

